package com.zhangtai.modules.dto;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import com.zhangtai.modules.entity.common.ImgUrlEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class EmployeeBpmDto implements Serializable {
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long id; //id

    /**
     * 新员工id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oid;//新员工编号

    private String applyName;//流程发起人
    private String applyUserCode; //发起人工号

    //    private String applydate; //申请日期
    private String code;//新员工工号


    private Date hiredate;

    private String name; //员工姓名
    private String mobile;
    /**
     * 拟录用部门
     */
    private String unitname;
    /**
     * 部门id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long unitId;
    /**
     * 拟录用岗位
     */
    private String jobname;
    /**
     * 职位id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long jobId;

    /**
     * * 拟录用公司
     */
    private String orgname;
    /**
     * 公司id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long orgId;

    /**
     * 管理职级
     */
//    private String managementJoblevel;
//    @JsonDeserialize(using = LongJsonDeserializer.class)
//    @JsonSerialize(using = LongJsonSerializer.class)
//    private Long managementJoblevelId;

    /**
     * 专业职级
     */
//    private String professionJoblevel;
//    @JsonDeserialize(using = LongJsonDeserializer.class)
//    @JsonSerialize(using = LongJsonSerializer.class)
//    private Long  professionJoblevelId;

    /**
     * 试用期
     */
    private Integer probationday;
    /**
     * 转正日期
     */
    private Date regularDay;

    /**
     * 合同类型
     */
    private String contractType;

    /**
     * 劳动合同期限
     */
    @ApiModelProperty(value="劳动合同/实习/返聘期限 ，选择列表：1：1个月，2：2个月，3：3个月，4：半年，5：1年，6：2年，7：3年",required = false)
    private Integer  laborContractYears;

    @ApiModelProperty(value="合同期限类型，1：固定期限，2：无固定期限 ，3：完成一定工作期限，4：5至10年(含10年)，5：无固定期限，6：完成一定工作期限，7：其他",required = false)
    private String contractTimeType;

    private String line;

    @ApiModelProperty(value="最高学历",required = false)
    private String istopgrade;

    @ApiModelProperty(value="专业",required = false)
    private String speciality;



    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long lineId;

    private String jobSystem;

    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long jobSystemId;

    /**
     * 岗位类别
     */

    private String jobType;
    /**
     * 职级类别
     */
    private String jobLevelType;

    private String jobLevel;
    /**
     * 职级id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long jobLevelId;

    /**
     * 原单位月薪
     */
    private BigDecimal oldSalary;

    /**
     * 原单位绩效
     */
    private BigDecimal oldPerformance;





    /*
复职员工信息
 */
    private String oldCompany;//原公司名称
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oldCompanyId;

    private String oldDepartment;//原部门名称
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oldDepartmentId;

    private String oldJobName;//原岗位名称
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oldJobId;

    private String oldJobType; //原用工类型
    private String oldStatus; //员工状态
    private Date oldHireDate ;//原入职时间
    private Date oldDimissionDate;//原离职时间
    private String oldIsCentreLeader;//是否中心负责人
    private String oldIsDepartmentLeader;//是否部门负责人
    @ApiModelProperty(value="原职级",required = false)
    private String oldJobLevel;
    //    复职<1 年 和 >=1年
    @ApiModelProperty(value="原职级Id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oldJobLevelId;

    @ApiModelProperty(value="面试评价表",required = false)
    private List<ImgUrlEntity> evaluation;

    @ApiModelProperty(value="背调报告",required = false)
    private List<ImgUrlEntity> backReport;

    @ApiModelProperty(value="简历原件",required = false)
    private List<ImgUrlEntity> resume;

    @ApiModelProperty(value="录用邀约函",required = false)
    private List<ImgUrlEntity> invitationLetter;

    @ApiModelProperty(value="岗位薪资测算表",required = false)
    private List<ImgUrlEntity> measure;

    @ApiModelProperty(value="银行流水/薪资证明",required = false)
    private List<ImgUrlEntity> prove;

    @ApiModelProperty(value="其他附件",required = false)
    private List<ImgUrlEntity> otherAtt;

}
